/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.unicon.autoservicio.dao;

import com.unicon.autoservicio.util.Util;
import com.unicon.sdc.ds.ws.CreditosDaoService;
import com.unicon.sdc.ds.ws.DetalleEntregaClienteObraBean;
import com.unicon.sdc.ds.ws.DocumentoPercepcionBean;
import com.unicon.sdc.ds.ws.FacturacionDaoService;
import com.unicon.sdc.ds.ws.FacturacionDaoService_Service;
import com.unicon.sdc.ds.ws.HistorialDePagoBean;
import com.unicon.sdc.facturacion.bs.ws.WSFacturacion;
import com.unicon.sdc.facturacion.bs.ws.WSFacturacion_Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.XMLGregorianCalendar;
import org.apache.log4j.Logger;

/**
 *
 * @author jcabrera
 */
public class FacturacionDAO {

    protected final Logger logger = Logger.getLogger(FacturacionDAO.class.getName());
    private FacturacionDaoService_Service facturacionDaoService;
    private WSFacturacion_Service facturacionWs;

    public FacturacionDAO() {
    }

    protected FacturacionDaoService getFacturacionDaoService() {
        if (facturacionDaoService == null) {
            facturacionDaoService = new FacturacionDaoService_Service();
        }
        return facturacionDaoService.getFacturacionDaoServicePort();
    }

    protected WSFacturacion getFacturacionBsService() {
        if (facturacionWs == null) {
            facturacionWs = new WSFacturacion_Service();
        }
        return facturacionWs.getWSFacturacionPort();
    }

    public byte[] exportarReporteHistorialDePagos(String codigoCliente, String codigoObra, Date desde, Date hasta, String usuario, String clave) {

        XMLGregorianCalendar fi = null, ff = null;
        try {
            fi = Util.dateToXMLGregorian(desde);
        } catch (DatatypeConfigurationException ex) {
            logger.error(ex.getMessage());
        }
        try {
            ff = Util.dateToXMLGregorian(hasta);
        } catch (DatatypeConfigurationException ex) {
            logger.error(ex.getMessage());
        }
        return getFacturacionBsService().exportarReporteHistorialDePagos(codigoCliente, codigoObra, fi, ff, usuario, clave);
    }

    public List<HistorialDePagoBean> obtenerHistorialDePagos(String codigoCliente, String codigoObra, Date desde, Date hasta, String usuario, String clave) {
        XMLGregorianCalendar fi = null, ff = null;
        try {
            fi = Util.dateToXMLGregorian(desde);
        } catch (DatatypeConfigurationException ex) {
            logger.error(ex.getMessage());
        }
        try {
            ff = Util.dateToXMLGregorian(hasta);
        } catch (DatatypeConfigurationException ex) {
            logger.error(ex.getMessage());
        }
        return (List<HistorialDePagoBean>) getFacturacionDaoService().getHistorialDePagos(codigoCliente, codigoObra, fi, ff,usuario,clave);

    }

    public List<DetalleEntregaClienteObraBean> obtenerResumenEntregasClienteObra(Date desde, Date hasta, String codigoAcuerdo, String codigoObra, String codigoCliente, String usuario, String clave) {
        XMLGregorianCalendar fi = null, ff = null;
        try {
            fi = Util.dateToXMLGregorian(desde);
        } catch (DatatypeConfigurationException ex) {
            logger.error(ex.getMessage());
        }
        try {
            ff = Util.dateToXMLGregorian(hasta);
        } catch (DatatypeConfigurationException ex) {
            logger.error(ex.getMessage());
        }
        return (List<DetalleEntregaClienteObraBean>) getFacturacionDaoService().getResumenEntregaClienteObra(fi, ff, codigoAcuerdo, codigoObra, codigoCliente,usuario,clave);

    }

    public byte[] exportarReporteEntregasPorClienteObra(  Date desde, Date hasta,String codigoAcuerdo, String codigoObra,String codigoCliente, String usuario, String clave) {

        XMLGregorianCalendar fi = null, ff = null;
        try {
            fi = Util.dateToXMLGregorian(desde);
        } catch (DatatypeConfigurationException ex) {
            logger.error(ex.getMessage());
        }
        try {
            ff = Util.dateToXMLGregorian(hasta);
        } catch (DatatypeConfigurationException ex) {
            logger.error(ex.getMessage());
        }
        return getFacturacionBsService().exportarReporteEntregasPorClienteObra(fi,  ff ,codigoAcuerdo,codigoObra,codigoCliente, usuario, clave);
    }
    
    
    
    public List<DocumentoPercepcionBean> obtenerDocumentosDePercepcioon(Date desde, Date hasta, String codigoAcuerdo, String serieDocumento, String numeroDocumento, String serieComprobante, String numeroComprobante, String codigoCliente, String usuario, String clave) {
        XMLGregorianCalendar fi = null, ff = null;
        try {
            fi = Util.dateToXMLGregorian(desde);
        } catch (DatatypeConfigurationException ex) {
            logger.error(ex.getMessage());
        }
        try {
            ff = Util.dateToXMLGregorian(hasta);
        } catch (DatatypeConfigurationException ex) {
            logger.error(ex.getMessage());
        }
        
        return (List<DocumentoPercepcionBean>) getFacturacionDaoService().selectAllDocumentosPercepcion(fi, ff, serieDocumento, numeroDocumento, codigoAcuerdo, serieComprobante, numeroComprobante, codigoCliente);
 
    }

    public byte[] exportarDocumentoPercepcion(ArrayList<DocumentoPercepcionBean> documentos, String usuario, String clave) {
     return  getFacturacionBsService().exportarDocumentosPercepcion(documentos, usuario, clave);
     
    }

 
}
